package sistkaraoke.negocio;

import java.util.Collection;

import sistkaraoke.dao.*;
import sistkaraoke.excepcion.DAOExcepcion;
import sistkaraoke.modelo.*;

public class GestionLocal implements IGestionLocal {
	
	public int insertar(String nombre, String direccion, String telefono, 
			            String correo ,String descripcion, int idadministrador) throws DAOExcepcion 
	 {
		
		ILocalDAO dao = new LocalDAO();

		ILocal vlLocal = new Local();
		vlLocal.setNombre(nombre);
		vlLocal.setDireccion(direccion);
		vlLocal.setTelefono(telefono);
		vlLocal.setCorreo(correo);
		vlLocal.setDescripcion(descripcion);
		
		IAdministrador admin = new Administrador(); 
		admin.setId(idadministrador);
		vlLocal.setAdministrador(admin);
					
		return dao.insertar(vlLocal);
	}
	
	public int actualizar(int idlocal, String nombre, String direccion, String telefono, 
			              String correo ,String descripcion) throws DAOExcepcion
	{
		
		ILocalDAO dao = new LocalDAO();

		ILocal vlLocal = new Local();
		vlLocal.setId(idlocal);
		vlLocal.setNombre(nombre);
		vlLocal.setDireccion(direccion);
		vlLocal.setTelefono(telefono);
		vlLocal.setCorreo(correo);
		vlLocal.setDescripcion(descripcion);
		
		//IAdministrador admin = new Administrador(); 
		//admin.setId(idadministrador);
		//vlLocal.setAdministrador(admin);
					
		return dao.actualizar(vlLocal);
	}
	
	public int eliminar(int idlocal) throws DAOExcepcion 
	{
		ILocalDAO dao = new LocalDAO();
		return dao.eliminar(idlocal);
	}
	
	public ILocal obtener(int idLocal, int idadministrador) throws DAOExcepcion
	{
		ILocalDAO dao = new LocalDAO();
		
		ILocal vlLocal = new Local();
		vlLocal.setId(idLocal);
		vlLocal.setNombre("");
				
		IAdministrador admin = new Administrador(); 
		admin.setId(idadministrador);
		vlLocal.setAdministrador(admin);
				
		Collection<ILocal> cILocal = dao.buscar(vlLocal);
		
		if(cILocal.size() > 0)
		{
			for (ILocal local : cILocal)
			{
				vlLocal = new Local();
				vlLocal.setId(idLocal);
				vlLocal.setNombre(local.getNombre());
				vlLocal.setDireccion(local.getDireccion());
				vlLocal.setTelefono(local.getTelefono());
				vlLocal.setCorreo(local.getCorreo());
				vlLocal.setDescripcion(local.getDescripcion());
				
				admin = new Administrador();
				admin.setId(local.getAdministrador().getId());
				admin.setNombre(local.getAdministrador().getNombre());
				vlLocal.setAdministrador(admin);				
			}
		}
		else
			vlLocal = null;
		
		return vlLocal;
	}
	
	public Collection<ILocal> buscarPorNombre(String nombre, int idadministrador) throws DAOExcepcion
	{
		ILocalDAO dao = new LocalDAO();
		
		ILocal vlLocal = new Local();
		vlLocal.setId(0);
		vlLocal.setNombre(nombre);
				
		IAdministrador admin = new Administrador();
		admin.setId(idadministrador);
		vlLocal.setAdministrador(admin);
					
		return dao.buscar(vlLocal);
	}
	
	public Collection<ILocal> listar(int idadministrador) throws DAOExcepcion
	{
		ILocalDAO dao = new LocalDAO();
		
		ILocal vlLocal = new Local();
		vlLocal.setId(0);
		vlLocal.setNombre("");
		
		IAdministrador admin = new Administrador();
		admin.setId(idadministrador);
		vlLocal.setAdministrador(admin);
					
		return dao.buscar(vlLocal);
	}
	
}	

